package com.yxinsur.imc.business.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxinsur.imc.business.domain.ImcBrokerRelation;
import com.yxinsur.imc.business.fact.BrokerInfoRecom;
import com.yxinsur.imc.business.vo.BrokerRelationVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 代理人关系Mapper接口
 *
 * @author imc
 * @date 2021-03-18
 */
@Mapper
public interface ImcBrokerRelationMapper extends BaseMapper<ImcBrokerRelation> {
    /**
     * 查询代理人关系
     *
     * @param id 代理人关系ID
     * @return 代理人关系
     */
    public ImcBrokerRelation selectImcBrokerRelationById(String id);

    /**
     * 查询代理人关系列表
     *
     * @param imcBrokerRelation 代理人关系
     * @return 代理人关系集合
     */
    public List<ImcBrokerRelation> selectImcBrokerRelationList(ImcBrokerRelation imcBrokerRelation);

    /**
     * 新增代理人关系
     *
     * @param imcBrokerRelation 代理人关系
     * @return 结果
     */
    public int insertImcBrokerRelation(ImcBrokerRelation imcBrokerRelation);

    /**
     * 修改代理人关系
     *
     * @param imcBrokerRelation 代理人关系
     * @return 结果
     */
    public int updateImcBrokerRelation(ImcBrokerRelation imcBrokerRelation);

    /**
     * 删除代理人关系
     *
     * @param id 代理人关系ID
     * @return 结果
     */
    public int deleteImcBrokerRelationById(String id);

    /**
     * 批量删除代理人关系
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteImcBrokerRelationByIds(String[] ids);

    /**
     * 根据代理人ID获取所有下级信息列表
     *
     * @param brokerId
     * @return
     */
    List<BrokerRelationVo> getBrokerDownBrokersByBrokerId(@Param("brokerId") Long brokerId);

    /**
     * 根据代理人ID获取上两级的信息
     *
     * @param brokerId
     * @return
     */
    List<BrokerRelationVo> getBrokerUpBrokersByBrokerId(@Param("brokerId") Long brokerId);

    ImcBrokerRelation selectImcBrokerRelationByBrokerId(Long brokerId);

    List<ImcBrokerRelation> selectChildrenRelationByBrokerId(Long brokerId);

    BrokerInfoRecom getRecommend(Long brokerId);

    List<BrokerInfoRecom> getRecommendGen(@Param("brokerId") Long brokerId, @Param("tenantId") Long tenantId, @Param("gen") String gen);

    List<BrokerRelationVo> selectImcBrokerRelationByBrokerIds(@Param("ids") Long[] ids);
}
